# -*- coding: utf-8 -*-

from django.db import models
from django.contrib.auth.models import User
import PIL
# Create your models here.

tipo_cargos = (
        ('Funcionario', 'Funcionário'),
        ('Professor', 'Professor'),
        ('Secretaria', 'Secretária'),
        ('Coordenador', 'Coordenador'),
        ('Administrador', 'Administrador'),
        ('Mantenedor', 'Mantenedor')
    )

tipo_aulas = (
        ('Matemática', 'Matemática'),
        ('Física', 'Física'),
        ('Química', 'Química'),
        ('História', 'História'),
        ('Geografia', 'Geografia'),
        ('Português', 'Português'),
        ('Inglês', 'Inglês')
    )

tipo_abrangencia = (
        ('Completa', 'Completa'),
        ('Parcial', 'Parcial'),
    )

tipo_local = (
		('Sala1', 'Sala1'),
		('Sala2', 'Sala2'),
		('Sala3', 'Sala3'),
		('Sala4', 'Sala4'),
		('Sala5', 'Sala5'),
		('Sala6', 'Sala6'),
		('Casa do Aluno', 'Casa do Aluno')
	)

tipo_aula = (
		('Individual', 'Individual'),
		('Grupo', 'Grupo')
	)

tipo_unidade = (
        ('Unidade I','Unidade I'),
        ('Unidade II','Unidade II'),
        ('Unidade III','Unidade III'),
        ('Unidade IV','Unidade IV'),
        ('Unidade V','Unidade V'),
)

class Unidade(models.Model):
        nome = models.CharField(max_length=128, choices=tipo_unidade)
        def __unicode__(self):
                return self.nome

class DetalheUsuario(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, related_name='detalheusuario')
    nome = models.CharField(max_length=128)
    cargo = models.CharField(max_length=128, choices=tipo_cargos)
    email = models.EmailField(verbose_name="E-Mail Principal")
    email2 = models.EmailField(verbose_name="E-Mail Secundário",null=True, blank=True)
    data_nascimento = models.DateField(verbose_name="Data de nascimento", null=True, blank=True)
    endereco = models.CharField(max_length=256,verbose_name="Endereço")
    telefone = models.CharField(max_length=128)
    celular = models.CharField(max_length=128, null=True, blank=True)
    naturalidade = models.CharField(max_length=128, null=True, blank=True)
    rg = models.CharField(max_length=128,verbose_name="RG", null=True, blank=True)
    cpf = models.CharField(max_length=128,verbose_name="CPF", null=True, blank=True)
    formacao = models.CharField(max_length=128,verbose_name="Formação", null=True, blank=True)
    carteira_trabalho = models.CharField(max_length=128, verbose_name="Carteira de trabalho", null=True, blank=True)
    pis = models.IntegerField(verbose_name="PIS", null=True, blank=True)
    nome_pai = models.CharField(max_length=128, verbose_name="Nome do pai", null=True, blank=True)
    nome_mae = models.CharField(max_length=128, verbose_name="Nome da mãe", null=True, blank=True)
    foto = models.FileField(upload_to='arquivos',null=True, default="avatar.jpg")
    bloconotas = models.TextField(verbose_name ='Bloco de Notas',null=True, blank=True )
    unidade = models.ManyToManyField(Unidade,null=True, blank=True)

class DadosFinanceiros(models.Model):
    detalheusuario = models.OneToOneField(DetalheUsuario,null=True, blank=True,)
    banco = models.CharField(max_length=128,null=True, blank=True, verbose_name = 'Nome do Banco')
    agencia = models.CharField(max_length=128,null=True, blank=True, verbose_name = 'Agência')
    numero_banco = models.CharField(max_length=128,null=True, blank=True, verbose_name = 'Nº do Banco')
    conta_bancaria = models.CharField(max_length=128 ,null=True, blank=True, verbose_name = 'Número da Conta')
    operacao = models.CharField(max_length=128 ,null=True, blank=True, verbose_name = 'Operação')

class Professor(models.Model):
    detalheusuario = models.OneToOneField(DetalheUsuario)
    valor = models.DecimalField(null=True, default="0", max_digits=10, decimal_places=2)
    ultimo_recibo = models.CharField("Último Recibo", max_length=128, null=True, default='Nenhum Recibo Emitido')

class Referencias(models.Model):
    professor = models.ForeignKey(Professor)
    tipo = models.CharField(max_length=128,null=True, blank=True, verbose_name = 'Tipo de Aula', choices=tipo_aulas)
    abrangencia = models.CharField(max_length=128,null=True, blank=True, verbose_name = 'Abrangência do Conteúdo', choices=tipo_abrangencia)
    observacao = models.TextField(null=True, blank=True, verbose_name = 'Observações')
    
class RelatorioProfessor(models.Model):
    professor = models.ForeignKey(Professor)
    valor = models.FloatField()
    data = models.DateField()

class PrecoAula(models.Model):
   aula_sozinho = models.DecimalField(verbose_name="Preço atual da aula individual", max_digits=10, decimal_places=2) #preços vigentes neste instante
   aula_sozinho_casa = models.DecimalField(verbose_name="Preço atual da aula individual em casa", max_digits=10, decimal_places=2) #preços vigentes neste instante
   aula_grupo = models.DecimalField(verbose_name="Preço atual da aula em grupo",max_digits=10, decimal_places=2)
   aula_grupo_casa = models.DecimalField(verbose_name="Preço atual da aula em grupo em casa",max_digits=10, decimal_places=2)
   aula_sozinho_novo = models.DecimalField(verbose_name="Novo preço da aula individual",max_digits=10, decimal_places=2)#preços que entrarão em vigor a partir de uma certa data
   aula_sozinho_casa_novo = models.DecimalField(verbose_name="Novo preço da aula individual em casa",max_digits=10, decimal_places=2)#preços que entrarão em vigor a partir de uma certa data
   aula_grupo_novo = models.DecimalField(verbose_name="Novo preço da aula em grupo",max_digits=10, decimal_places=2)
   aula_grupo_casa_novo = models.DecimalField(verbose_name="Novo preço da aula em grupo em casa",max_digits=10, decimal_places=2)
   data_limite = models.DateField(verbose_name="Data limite para alunos antigos no preço anterior")
   data_vigencia = models.DateField(verbose_name="Data em que a mudança entrará em vigor")
   unidade = models.OneToOneField(Unidade)
       
class Aluno(models.Model):
    nome = models.CharField(max_length=128)
    data_nascimento = models.DateField(verbose_name="Data de nascimento", null=True, blank=True)
    colegio = models.CharField(max_length=128, verbose_name="Colégio")
    serie = models.CharField(max_length=128, verbose_name="Série")
    endereco = models.CharField(max_length=256, verbose_name="Endereço", null=True, blank=True)
    cidade = models.CharField(max_length=128, null=True, blank=True)
    estado = models.CharField(max_length=128)
    telefone_casa = models.CharField(max_length=128, verbose_name="Telefone residencial", null=True, blank=True)
    celular = models.CharField(null=True, blank=True, max_length=128)
    email_1 = models.EmailField(verbose_name="E-mail", null=True, blank=True)
    email_2 = models.EmailField(null=True, blank=True, verbose_name="E-mail opcional")
    responsavel = models.CharField(max_length=128, verbose_name="Nome do responsável", null=True, blank=True)
    telefone_pais = models.CharField(max_length=128, verbose_name="Telefone do responsável", null=True, blank=True)
    cpf_responsavel = models.CharField(max_length=128, verbose_name="CPF do responsável", null=True, blank=True)
    data_ingresso = models.DateField(verbose_name="Data de Registro na 4k")
    obs = models.TextField("Observações", null=True, blank=True)
    ultimo_relatorio = models.CharField("Último Relatório", max_length=128, null=True, default='Nenhum Relatório Emitido')
    preco_aula = models.ForeignKey(PrecoAula)
    unidade = models.ManyToManyField(Unidade,null=True, blank=True)
    
    def __unicode__(self):
        return self.nome

class Local(models.Model):
        nome = models.CharField(max_length=128)
        unidade = models.ForeignKey(Unidade,null=True, blank=True)
        def __unicode__(self):
                return self.nome
        
class RelatorioAluno(models.Model):
        aluno = models.ForeignKey(Aluno)
        relatorio = models.TextField()

class Aula(models.Model):
    professor = models.ForeignKey(Professor)
    local = models.ForeignKey(Local)
    aluno = models.ManyToManyField(Aluno,null=True, blank=True)
    inicio = models.DateTimeField()
    fim = models.DateTimeField()
    valor = models.DecimalField(max_digits=16, decimal_places=2)
    tipo = models.CharField(max_length=128)
    valido = models.BooleanField()

class StatusAula(models.Model):
	aula = models.ForeignKey(Aula, related_name='status')
	aluno = models.ForeignKey(Aluno)
	pago = models.BooleanField()

class RelatorioAula(models.Model):
    aula = models.OneToOneField(Aula, related_name='relatorio')
    descricao = models.TextField("Informações da Aula")
    valido = models.BooleanField()
    
class Pagamento(models.Model):
    aluno = models.ForeignKey(Aluno)
    valor = models.DecimalField(max_digits=16, decimal_places=2)
    data = models.DateField()
    desconto = models.DecimalField(max_digits=16, decimal_places=2, default=0)
    
class Boleto(models.Model):
    pagamento = models.ForeignKey(Pagamento)
    
class Divida(models.Model):
    aluno = models.OneToOneField(Aluno, related_name="divida")
    valor = models.DecimalField(max_digits=16, decimal_places=2)
    
class Gastos(models.Model):
    descricao = models.CharField(max_length=256, verbose_name="Descrição")
    valor = models.DecimalField(max_digits=16, decimal_places=2)
    data = models.DateField()
    
class Inventario(models.Model):
    objeto = models.CharField(max_length=128)
    quantidade_total = models.IntegerField()
    valor_total = models.FloatField()
    
    def __unicode__(self):
        return self.objeto

class Estoque(models.Model):
    inventario = models.ForeignKey(Inventario)
    quantidade = models.IntegerField()
    valor = models.FloatField("Valor Total da Compra")
    local_compra = models.CharField(max_length=128, verbose_name="Local da compra")
    data_compra = models.DateField()
    unidade = models.ForeignKey(Unidade,null=True, blank=True)